﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using AbstraX.Contracts;

namespace VSService
{
    [ServiceContract]
    public interface IVSService
    {
        [OperationContract]
        void OpenSession(Guid userID);
        [OperationContract]
        void CloseSession(Guid userID);
        [OperationContract]
        void RegisterInstance(Guid userID, int processID);
        [OperationContract]
        void OpenVisualStudio(Guid userID);
        [OperationContract]
        void UnRegisterInstance(Guid userID, int processID);
        [OperationContract]
        VSSolution OpenVSSolution(Guid userID, string fileName);
        [OperationContract]
        void ReturnOpenVSSolution(Guid userID, VSSolution solution);
        [OperationContract]
        VSProject[] GetProjects(Guid userID, VSSolution solution);
        [OperationContract]
        void ReturnGetProjects(Guid userID, VSProject[] projects);
        [OperationContract]
        VSMessage GetMessage(Guid userID);
        [OperationContract]
        List<VSServiceSession> GetSessions();
        [OperationContract]
        VSProjectItem[] GetModels(Guid userID, VSProject project);
        [OperationContract]
        void ReturnGetModels(Guid userID, VSProjectItem[] models);
        [OperationContract]
        byte[] GetFileContents(Guid userID, VSProjectItem projectItem, int index);
        [OperationContract]
        void ReturnGetFileContents(Guid userID, byte[] contents);
        [OperationContract]
        void SendOutput(string[] output);
        [OperationContract]
        string[] GetOutput(int lineIndex);
        [OperationContract]
        void SendStatus(string status);
        [OperationContract]
        string GetStatus();
    }
}
